package com.patentbackend.patentmanage.service;

import com.patentbackend.patentmanage.dto.request.RegisterRequest;
import com.patentbackend.patentmanage.entity.User;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Optional;

public interface UserService {
    User registerUser(RegisterRequest registerRequest);
    Optional<User> findByUsername(String username);
    Boolean existsByUsername(String username);
    Boolean existsByEmployeeId(String employeeId);
    Boolean existsByEmail(String email);
    User getCurrentUser();
    Page<User> findAll(Pageable pageable);
    Optional<User> findById(Long id);
    User save(User user);

    boolean existsById(Long id);
    User updateUser(Long id, RegisterRequest userDto);
    User verifyUser(Long id, boolean verified, List<String> roles);
    void deleteUser(Long id);
}